iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
Software Development

後端工程師學習地圖導覽系列 第 8

Day 8 - 域名系統(DNS)

  • 分享至 

  • xImage
  •  

DNS (Domain Name System,網域名稱系統)是網際網路這龐大系統中相當重要的一個環節,試想一下,當你想要連上Google 搜尋資料時,輸入的不是www.google.com.tw 而是142.251.43.3,這串數字就已經夠難記了,更別說還有上千萬個網站,一般人不可能記得住這些數字,而正是有了DNS 我們才能夠這麼輕鬆的連上各個網站。

網域名稱

網域名稱(Domain Name),可簡稱為網域域名它的作用是把IP 位址轉換成一般人看得懂的文字,也就是一串由「ASCII字元」和「點」組成的網址。

域名結構

以Google 的域名www.google.com.tw為例,將域名用點分割並由右至左閱讀,每個部份都有其特殊的資訊。

頂級域

頂級域 (Top Level Domain,TLD) 又分成兩類,國碼頂級域和通用頂級域。

  • 國碼頂級域 (Country Code Top Level Domain,ccTLD)
    • 通常由2個英文字母組成。
    • 表示國家或地區名稱的縮寫,大部分都使用ISO 31166-1 標準。
    • 自2010 年起,網際網路號碼分配局 (IANA)開始分配國際化國碼頂級域,ccTLD 可以使用當地文字,如中文國碼(中國、香港、台灣),也不限於兩個字,如新加坡。
  • 通用頂級域 (General Top Level Domain,gTLD)
    • 沒有字數限制,但通常3個英文字母。
    • 表示某種機構或組織,如:
      • com:商業機構
      • edu:教育機構
      • gov:政府
      • mil:軍事機構
      • net:ISP
      • org:不屬於其他通用頂級域的組織使用

了解完頂級域後,可以看出www.google.com.tw 的tw 和com 分別代表國碼頂級域和通用頂級域。

二級域

二級域 (Second Level Domain,SLD),在辨識完頂級域後就是二級域,如www.google.com.tw 中的google 就是二級域,zh.wikipedia.org 中的wikipedia 也是二級域。

子域名

子域名 (Subdomain),是比二級域更左側的域名,通常是www,也有像zh.wikipedia.orgzh

國際化域名

國際化域名 (Internationalized Domain Name,IDN),是指部分或完全使用特殊文字或非拉丁字母組成的域名,包含中文、俄語、阿拉伯語等。

在DNS 中,國際化域名使用Punycode 撰寫並以ASCII 字串儲存。


網域名稱系統

DNS (Domain Name System,網域名稱系統,又稱域名系統),DNS 是網際網路運作中的一個環節,它是能夠將域名和IP 位址相互對應的一個分散式資料庫系統,使用TCP/UDP 埠53,限制每一級域名最大長度63個字元域名總長度不可超過253個字元

資源紀錄

要使用DNS 伺服器才能夠使用DNS,DNS 伺服器中預先登記了網域名稱與IP 位址,並記錄各種資訊。而資源紀錄便是記錄在DNS 伺服器中的資訊,常見的紀錄類型有:

代碼 內容
A 對應主機名稱的IP 位址
AAAA 對應主機名稱的IPv6 位址
CNAME 對應主機名稱和其別名
MX 對應網域名稱的電子郵件伺服器
NS 管理網域名稱的DNS 伺服器
PTR 對應IP 位址的主機名稱

域名解析

世界上的域名有上億個,沒有任何一台DNS 伺服器能儲存所有的域名,資料都是分散在世界各地的DNS 伺服器上,而它們的結構就類似於電腦的目錄樹結構,最頂端的是一個根(root)目錄,旗下分為好幾個基本類別名稱。

而DNS 查詢的方式有兩種,遞迴和迭代:

遞迴查詢

在遞迴查詢中,客戶端向本地DNS 伺服器發送查詢請求後,若本地DNS 伺服器沒有相關域名的快取資料,會以DNS 客戶的身分向其他DNS 伺服器發送查詢請求,若其他DNS 伺服器也沒有相關域名的快取資料,也會以DNS 客戶的身分向其他DNS 伺服器發送查詢請求,直到返回最終結果,執行步驟如下:

  1. 客戶端向本地DNS 伺服器發送查詢請求
  2. 本地DNS 伺服器會先檢查快取
    1. 若存在紀錄則直接回傳
    2. 若沒有紀錄則向根域名伺服器發送查詢請求
  3. 根域名伺服器會先檢查快取
    1. 若存在紀錄則直接回傳
    2. 若沒有紀錄則向頂級域伺服器發送查詢請求
  4. 頂級域伺服器會先檢查快取
    1. 若存在紀錄則直接回傳
    2. 若沒有紀錄則向二級域伺服器發送查詢請求
  5. 重複以上動作,不斷往下一級域伺服器發送查詢請求,直到取得最終結果

迭代查詢

與遞迴查詢不同,迭代查詢時,其他DNS 伺服器不會代替本地DNS 伺服器發送查詢請求,而是回傳下一級域伺服器的IP 位址,讓本地DNS 伺服器向其他DNS 伺服器發送請求,執行步驟如下:

  1. 客戶端向本地DNS 伺服器發送查詢請求
  2. 本地DNS 伺服器會先檢查快取
    1. 若存在紀錄則直接回傳
    2. 若沒有紀錄則向根域名伺服器發送查詢請求
  3. 根域名伺服器先檢查快取
    1. 若存在紀錄則直接回傳
    2. 若沒有紀錄則回傳自己紀錄的頂級域伺服器IP 位址
  4. 本地DNS 伺服器收到頂級域伺服器IP 位址,則向頂級域伺服器發送查詢請求
  5. 頂級域伺服器會先檢查快取
    1. 若存在紀錄則直接回傳
    2. 若沒有紀錄則回傳自己紀錄的二級域伺服器IP 位址
  6. 本地DNS 伺服器收到二級域伺服器IP 位址,則向二級域伺服器發送查詢請求
  7. 重複以上動作,不斷向下一級域伺服器發送查詢請求,直到取得最終結果

小結

看完艱澀複雜的IP 協議後,在看到域名系統就覺得和藹可親許多,如果只是後端工程師的話,其實大概了解域名系統的概念就可以了,其他就先有個印象,如果遇到再複習會比較快~~


參考資料

Domain name - MDN Web Docs Glossary: Definitions of Web-related terms | MDN

What is a domain name? | Domain name vs. URL | Cloudflare

域名 - 維基百科,自由的百科全書

DNS - MDN Web Docs Glossary: Definitions of Web-related terms | MDN

What is DNS? | How DNS works | Cloudflare

域名系統 - 維基百科,自由的百科全書

DNS迭代查询和递归查询


上一篇
Day 7 - IP 的定址和路由
下一篇
Day 9 - HTTP/HTTPS
系列文
後端工程師學習地圖導覽11
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言